# -*- coding: utf-8 -*-
 
import pymongo
from pymongo import Connection   
from pymongo.objectid import ObjectId as _id
import pymongo.json_util
import json  
import time
from random import randrange

conn = Connection()  
conn.drop_database('t')  
conn.drop_database('msg')  
db = conn['t'] 
db_m = conn['msg']  

_utypes = [
    u'投资顾问',
    u'理财顾问',
    u'客户经理',
    u'投资达人',
    u'投资客户',
]
_texts=[
u'自由的正解：不是你想做什么就能做什么，而是你不想做什么就不做什么。茅塞顿悟，想起《勇敢的心》里最后一声振吼：freedom~很多人对自由的理解就是要什么得什么，其实不过是给自己个人行为添个华丽的外套，本质还是一己私利的满足。',
u'Facebook访问的感想：1）Mark已从青涩创业者成为领导者，他有很强的意志，一把抓公司大事，但也能倾听， 2）Facebook就像六年前的Google，充满活力，有来自各公司的跳槽牛人，3）Facebook强调做平台，和应用划清距离，4）Facebook控制成长，只有2000人，5）Facebook办公室非常简朴，连cubicle都没有。',
u'央行自2月9日起上调利率，金融机构一年期存贷款基准利率分别上调0.25个百分点，这印证了此前我们一直预期的一季度“三率启动”的政策预期。这次加息应当是对一月份信贷增长可能依然较快、一月份物价可能因为气候因素和春节因素等创出新高、境外商品价格近期持续上涨等的必然政策反映。',
u'比较一下M1、M2我们可能跟美国差不多，我们的GDP总量只有美国的三分之一。但是我们的差距在什么地方呢？就是美国的M3、M4，这些多元化的金融资产。我们未来十年就是怎么把这些储蓄通过从主要以银行储蓄为主体转换为多种多样的金融资产，这是金融业快速发展的机遇http://url.cn/499QIG',
u'我一直觉得你特有才！真的！你削个耳朵就是梵高，扎聋了就是贝多芬，戳瞎了就是阿炳，瘫痪了就是霍金，耍点儿流氓就是唐伯虎，犯犯疯病就是徐文长，搞搞同性恋就是张国荣，得个面瘫就是北野武，谢了顶就是葛优，剁了小鸡鸡活脱儿就是司马迁……怎么样？考虑一下？',
]     

_orgs = [
{ "code" : "4100", "name" : "上海北京东路营业部" },
{ "code" : "4200", "name" : "上海淮海西路营业部" },
{ "code" : "4300", "name" : "上海民生路营业部" },
{ "code" : "2000", "name" : "广州新港西路营业部" },
{ "code" : "2100", "name" : "广州东风中路营业部" },
{ "code" : "2400", "name" : "广州天河北路营业部" },
{ "code" : "3300", "name" : "杭州分公司－杭州体育场部" },
{ "code" : "4500", "name" : "杭州分公司－杭州萧然东部" },
{ "code" : "3900", "name" : "浙南经纪分公司－义乌部" },
{ "code" : "6700", "name" : "浙南经纪分公司－温州部" },
{ "code" : "1100", "name" : "深圳红岭中路营业部" },
]
N_ORGS = len(_orgs)

N_USER = 100
N_FOLLOWS = 20
N_TWEETS = 100
 
    
def init_users():
    for i in range(N_USER):
        uid = 'user%d'%i
        name = u'用户%d'%i 
        user = {
            'uid': uid,
            'name': name,
            'pwd': uid,
            'time': time.time(), 
            'follows_count': 0,
            'fans_count': 0,
            'tweets_count': 0,
            'type': _utypes[randrange(len(_utypes))],
            'org': _orgs[randrange(N_ORGS)],
        }
        msgbox = {
            'uid': uid,
            'name': name, 
            'time': time.time(),
            'new_msg_count': 0,
        }
        db.users.save(user) 
        db_m.msgboxes.save(msgbox)

def follow(uid1,uid2): 
    if db.users.find_one({'uid':uid1,'follows':uid2}): return
    db.users.update({'uid':uid1},{'$addToSet':{'follows':uid2},'$inc':{'follows_count':1}})
    db.users.update({'uid':uid2},{'$inc':{'fans_count':1}})
    
def init_relations():
    for i in range(N_USER):
        uid1 = 'user%d'%i
        for idx in range(randrange(N_FOLLOWS)):
            uid2 = 'user%d'%idx
            follow(uid1,uid2)
    
           
def init_tweets():
    for i in range(N_TWEETS):
        u_index = randrange(N_USER)
        uid = 'user%d'%u_index
        name = u'用户%d'%u_index 
        text = _texts[randrange(len(_texts))]
        tweet = {
            'text': text,
            'user': {'uid':uid,'name':name}, 
            'time': time.time(),
            'fav_count': 0,
            're_count': 0,
            'cmt_count':0,
        }
        db.users.update({'uid':uid},{'$inc':{'tweets_count':1}})
        db.tweets.save(tweet)
    
init_users()
init_relations()
init_tweets()
    